package com.foxire.staticmethod;

public class VerifyCodeUtil {
    // 工具类没有创建对象的必要性，所以建议私有化构造器
    private VerifyCodeUtil() {}
    // 静态方法设计工具类
    public static String geberateCode(int n){
        // 定义一个字符串变量用于记录生产的验证码
        String code = "";
        // 循环n次，每次生成一个字符
        for (int i = 0; i < n; i++) {
            // 为当前位置随机生成一个数字或大写字母或小写字母， 数字0/ 大写1/ 小写2
            // 随机一个0或者1或者2表示当前位置随机的字符类型。
            int type = (int)(Math.random()*3);  // [0,1)*3 => 0 1 2
            // 使用switch判断当前位置随机的字符类型
            switch (type){
                case 0:
                    //  如果当前位置是数字，则随机生成一个数字0-9，然后拼接。
                    int num = (int)(Math.random()*10);
                    code += String.valueOf(num);
                    break;
                case 1:
                    // 如果当前位置是大写字母，则随机生成一个字母A-Z，然后拼接。'A' 65   'Z' 65+25
                    int num1 = (int)(Math.random()*26)+65;
                    char ch = (char) (65+num1);// 得到大写字母的随机编号，转成大写字母
                    code += ch;
                    break;
                case 2:
                    //8、如果当前位置是小写字母，则随机生成个字母a-z，然后拼接。'a'97     'z'97+25
                    int num2=(int)(Math.random()*26);  // [0,25]
                    char ch1=(char)(97+num2);
                    code += ch1;
                    break;
            }
        }
        return code;
    }
}
